Macro Cut Circle/it

Other languages:

Taglia Cerchio

Descrizione
Taglia cerchi o archi in più archi. Gli archi creati possono essere colorati alternativamente per distinguerli.
(Riga di comando, incolla la macro completa nella console Python).

Versione macro: 00.03
Ultima modifica: 2019-07-02
Download: ToolBar Icon
Autore: mario52
Autore
mario52
Download
ToolBar Icon
Link
Versione macro
00.03
Data ultima modifica
2019-07-02
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Questa macro taglia cerchi o archi in più archi. Gli archi creati possono essere colorati alternativamente per distinguerli.

CutCircle

Utilizzo

  1. Incollare la macro cutCircle nella Console Python.
  2. Premere Enter (il codice è ora in memoria).
  3. Selezionare uno o più cerchi o archi.
  4. Invocare la funzione cutCircle() con 1 o 2 argomenti dalla console Python:
    • Esempio con 1 argomento: cutCircle(4). Questo creerà 4 nuovi archi per ogni cerchio o arco selezionato e si fermerà lì (nessuna colorazione).
    • Esempio con 2 argomenti: cutCircle(6, 1). Questo creerà 6 nuovi archi per ciascun cerchio o arco selezionato, colorati alternativamente in rosso e bianco come mostrato nell'immagine.
  5. L'oggetto originale non viene eliminato.

Script

Icona della barra degli strumenti

Macro_Cut_Circle.FCMacro

# selection circle(s) (circles and arcs)
# give number of cut, biColor 0/1
# cut the circle to x arcs
# if biColor is <> 0 the arcs are colored alternately Red White Red White ....
# 
 
__title__   = "cutCircle"
__author__  = "Mario52"
__date__    = "02/07/2019"
__version__ = "00.03"

import Draft
global biscolor ; biscolor = 0
def cutCircle(number = 2, biColor = 0):
    global biscolor
    def defbiColor(objet):
        global biscolor
        if biscolor == 0:
            FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,0.0,0.0) # 255 = 1 (10 = (1/255 * 10 ))
            biscolor = 1
        else:
            FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,1.0,1.0) # 255 = 1 (10 = (1/255 * 10 ))
            biscolor = 0
    selection = FreeCADGui.Selection.getSelection()
    for piece in selection:
        nom = piece.Name
        if (nom[:6] == "Circle") or (nom[:8] == "Cylinder"):
            circonference = piece.Shape.Length
            rayon = piece.Radius
            placem = piece.Placement
 
            if (nom[:8] == "Cylinder"):
                pivot0 = float(piece.Angle/number)
                FreeCAD.Console.PrintMessage("Cylinder"+"\n")
            else:
                pivot0 = float(360/number)
                FreeCAD.Console.PrintMessage("Circle"+"\n")
            pivot1 = 0.0
            for i in range(number):
                cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1),endangle=(pivot0+pivot1),support=None)
                if biColor != 0:
                    defbiColor(cercle)
                pivot1 += pivot0
        elif nom[:3] == "Arc":
            FreeCAD.Console.PrintMessage("Arc"+"\n")
            circonference = piece.Shape.Length
            rayon = piece.Radius
            placem = piece.Placement
            First = float(piece.FirstAngle)
            Last  = float(piece.LastAngle)
            pivot0 = abs((First - Last) / number)
            pivot1 = 0.0
            for i in range(number):
                cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1+First),endangle=(pivot0+pivot1+First),support=None)
                if biColor != 0:
                    defbiColor(cercle)
                pivot1 += pivot0
    App.ActiveDocument.recompute()

#cutCircle(5, 1)  # here with 5 arcs and colored
#cutCircle(4)     #

Esempio

cutCircle(5, 1)  # here with 5 arcs and colored
cutCircle(4)     #

In progetto

Tagliare il cerchio in cilindro

Versione

ver 00.03 02/07/2019 : aggiunto "App.ActiveDocument.recompute()"

ver 00.02 03/09/2015 : aggiunta la creazione di archi colorati alternativamente Rosso Bianco Rosso Bianco .... oppure no

ver 00.01 24/02/2015 :